ArcGIS Engine 二次开发开发 图层操作 源代码(图层放大、缩小、漫游、返回前后视角、全图显示)要素选择、缩放至选择、清除选择

您所在的位置:网站首页 arcgis engine 绘制多边形 ArcGIS Engine 二次开发开发 图层操作 源代码(图层放大、缩小、漫游、返回前后视角、全图显示)要素选择、缩放至选择、清除选择

ArcGIS Engine 二次开发开发 图层操作 源代码(图层放大、缩小、漫游、返回前后视角、全图显示)要素选择、缩放至选择、清除选择

2023-10-25 03:13| 来源: 网络整理| 查看: 265

 

 

1.主程序代码:

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormMain());

2.拉框放大:(有两种代码)喜欢哪个用哪个:

第一种:

mainMapControl.CurrentTool = null; pMouseOperate = "ZoomIn"; mainMapControl.MousePointer = esriControlsMousePointer.esriPointerZoomIn;

第二种 :

ICommand command = new ControlsMapZoomInTool(); command.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = command as ITool;

3.拉框放小:(也有两种代码)喜欢哪个用哪个

第一种:

ICommand command = new ControlsMapZoomOutTool(); command.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = command as ITool;

第二种:

mainMapControl.CurrentTool = null; pMouseOperate = "ZoomOut"; mainMapControl.MousePointer = esriControlsMousePointer.esriPointerZoomOut;

4.逐级放大:(...)

第一种:

IEnvelope pEnvelope; pEnvelope = mainMapControl.Extent; pEnvelope.Expand(0.5, 0.5, true); //这里设置放大为2倍,可以根据需要具体设置 mainMapControl.Extent = pEnvelope; mainMapControl.ActiveView.Refresh();

第二种:

axMapControl1.CurrentTool = null; IEnvelope pEnvelope = axMapControl1.Extent; pEnvelope.Expand(0.5, 0.5, true); axMapControl1.Extent = pEnvelope; axMapControl1.Refresh();

5.逐级缩小:(...)

第一种;

//IEnvelope pEnvelope; //pEnvelope = mainMapControl.Extent; //pEnvelope.Expand(1.5, 1.5, true); //mainMapControl.Extent = pEnvelope; //mainMapControl.ActiveView.Refresh(); IActiveView pActiveView = mainMapControl.ActiveView; IPoint centerPoint = new PointClass(); centerPoint.PutCoords((pActiveView.Extent.XMin + pActiveView.Extent.XMax) / 2, (pActiveView.Extent.YMax + pActiveView.Extent.YMin) / 2); IEnvelope envlope = pActiveView.Extent; envlope.Expand(1.5, 1.5, true); //和放大的区别在于Expand函数的参数不同 pActiveView.Extent.CenterAt(centerPoint); pActiveView.Extent = envlope; pActiveView.Refresh();

第二种: 

axMapControl1.CurrentTool = null; IEnvelope pEnvelope = axMapControl1.Extent; pEnvelope.Expand(2, 2, true); axMapControl1.Extent = pEnvelope; axMapControl1.Refresh();

6.漫游(Pan)(也叫拖动图层):主要是用(MapPanTool();)(...)

第一种:

mainMapControl.CurrentTool = null; pMouseOperate = "Pan"; mainMapControl.MousePointer = esriControlsMousePointer.esriPointerPan;

第二种: 

ICommand command = new ControlsMapPanTool(); command.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = command as ITool;

7.地图全图功能(显示全图):(...)

第一种:

axMapControl1.CurrentTool = null; ICommand command = new ControlsMapFullExtentCommand(); command.OnCreate(axMapControl1.Object); command.OnClick();

第二种: 

mainMapControl.Extent = mainMapControl.FullExtent;

8.返回前一视图:

pExtentStack = mainMapControl.ActiveView.ExtentStack; //判断是否可以回到前一视图,第一个视图没有前一视图 if (pExtentStack.CanUndo()) { pExtentStack.Undo(); btnForWardView.Enabled = true; if (!pExtentStack.CanUndo()) { btnFrontView.Enabled = false; } } mainMapControl.ActiveView.Refresh();

9.返回后一视图:

pExtentStack = mainMapControl.ActiveView.ExtentStack; //判断是否可以回到后一视图,最后一个视图没有后一视图 if (pExtentStack.CanRedo()) { pExtentStack.Redo(); btnFrontView.Enabled = true; if (!pExtentStack.CanRedo()) { btnForWardView.Enabled = false; } } mainMapControl.ActiveView.Refresh();

10.要素选择:

//bSelectFeature = true; #region 调用类库资源 mainMapControl.CurrentTool = null; ControlsSelectFeaturesTool pTool = new ControlsSelectFeaturesToolClass(); pTool.OnCreate(mainMapControl.Object); mainMapControl.CurrentTool = pTool as ITool; #endregion //pMouseOperate = "SelFeature";

11.缩放至选择:

#region 调用类库资源 //ICommand pCommand = new ESRI.ArcGIS.Controls.ControlsZoomToSelectedCommandClass(); //pCommand.OnCreate(mainMapControl.Object); //pCommand.OnClick(); #endregion int nSlection = mainMapControl.Map.SelectionCount; if (nSlection == 0) { MessageBox.Show("请先选择要素!", "提示"); } else { ISelection selection = mainMapControl.Map.FeatureSelection; IEnumFeature enumFeature = (IEnumFeature) selection; enumFeature.Reset(); IEnvelope pEnvelope = new EnvelopeClass(); IFeature pFeature = enumFeature.Next(); while (pFeature != null) { pEnvelope.Union(pFeature.Extent); pFeature = enumFeature.Next(); } pEnvelope.Expand(1.1, 1.1, true); mainMapControl.ActiveView.Extent = pEnvelope; mainMapControl.ActiveView.Refresh(); }

12.清除选择:

#region 调用类库资源 //ICommand pCommand = new ESRI.ArcGIS.Controls.ControlsClearSelectionCommandClass(); //pCommand.OnCreate(mainMapControl.Object); //pCommand.OnClick(); #endregion IActiveView pActiveView = mainMapControl.ActiveView; pActiveView.FocusMap.ClearSelection(); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, pActiveView.Extent);



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3